Page({
  /**
   * 页面的初始数据（无冗余，全部必要）
   */
  data: {
    currentTab: '全部',        // 当前选中标签（筛选用）
    currentFilter: '全部',     // 当前选中老人（筛选用）
    currentElderlyId: '',      // 选中老人ID（筛选用）
    showModal: false,          // 明细弹窗状态
    showPayModal: false,       // 支付弹窗状态
    wxUserId: '',              // 微信用户ID（接口必传）
    token: '',                 // 登录令牌（接口必传）
    elderlyList: [],           // 关联老人列表（渲染筛选栏）
    billList: [],              // 账单列表（核心渲染数据）
    currentBill: {},           // 明细弹窗数据
    payBillInfo: {}            // 支付弹窗数据
  },

  /**
   * 生命周期函数--监听页面加载（必要，初始化数据）
   */
  onLoad(options) {
    const app = getApp();
    const wxUserId = app.globalData.userId;
    const token = app.globalData.token || wx.getStorageSync('token');
    if (!wxUserId) {
      wx.showToast({ title: '用户未登录', icon: 'none' });
      return;
    }

    // 接收 elderlyId 参数（从家人页面跳转过来）
    let elderlyId = '';
    if (options.elderlyId) {
      elderlyId = options.elderlyId;
      console.log('接收到老人ID：', elderlyId);
    }

    this.setData({ 
      wxUserId, 
      token,
      currentElderlyId: elderlyId // 设置当前筛选的老人ID
    }, () => {
      this.getElderlyList(elderlyId); // 传递elderlyId用于设置选中状态
      this.getBillList();
    });
  },

  /**
   * 生命周期函数--监听页面显示（核心：返回后自动刷新数据）
   */
  onShow() {
    if (this.data.wxUserId) {
      this.getBillList(); // 页面显示就刷新，确保数据最新
    }
  },

  /**
   * 获取关联老人列表（必要，渲染筛选栏）
   */
  getElderlyList(targetElderlyId) {
    const { wxUserId, token } = this.data;
    const that = this;
    
    wx.request({
      url: 'http://localhost:8080/api/bill/elderly',
      method: 'GET',
      data: { wxUserId },
      header: { 'Authorization': 'Bearer ' + token },
      success: (res) => {
        if (res.data.code === 200 && res.data.data) {
          const elderlyList = res.data.data;
          that.setData({ elderlyList });

          // 如果传入了 elderlyId，自动设置筛选项
          if (targetElderlyId) {
            const targetElderly = elderlyList.find(item => item.id == targetElderlyId);
            if (targetElderly) {
              that.setData({
                currentFilter: targetElderly.name,
                currentElderlyId: targetElderlyId
              });
              console.log('自动筛选老人：', targetElderly.name);
            }
          }
        }
      },
      fail: () => { wx.showToast({ title: '网络错误', icon: 'none' }); }
    });
  },

  /**
   * 获取账单列表（核心：数据渲染+刷新）
   */
  getBillList() {
    const { wxUserId, currentTab, currentElderlyId, token } = this.data;
    const transactionStatus = currentTab === '全部' ? '' : currentTab;
    wx.request({
      url: 'http://localhost:8080/api/bill/list',
      method: 'GET',
      data: { wxUserId, elderlyId: currentElderlyId, transactionStatus },
      header: { 'Authorization': 'Bearer ' + token },
      success: (res) => {
        this.setData({ billList: res.data.code === 200 ? (res.data.data || []) : [] });
      },
      fail: () => {
        wx.showToast({ title: '网络错误', icon: 'none' });
        this.setData({ billList: [] });
      }
    });
  },

  /**
   * 切换账单标签（必要，筛选功能）
   */
  switchTab(e) {
    this.setData({ currentTab: e.currentTarget.dataset.tab }, () => {
      this.getBillList();
    });
  },

  /**
   * 切换老人筛选（必要，筛选功能）
   */
  switchFilter(e) {
    this.setData({
      currentFilter: e.currentTarget.dataset.filter,
      currentElderlyId: e.currentTarget.dataset.elderlyid
    }, () => {
      this.getBillList();
    });
  },

  /**
   * 查看账单明细（必要，明细功能）
   */
  showDetail(e) {
    const billId = e.currentTarget.dataset.billid;
    this.setData({
      currentBill: this.data.billList.find(item => item.id === billId) || {},
      showModal: true
    });
  },

  /**
   * 关闭明细弹窗（必要）
   */
  hideModal() {
    this.setData({ showModal: false });
  },

  /**
   * 打开支付弹窗（必要，支付入口）
   */
  goPay(e) {
    const billId = e.currentTarget.dataset.billid;
    const payBillInfo = this.data.billList.find(item => item.id === billId) || {};
    if (!payBillInfo.id) {
      wx.showToast({ title: '获取账单失败', icon: 'none' });
      return;
    }
    this.setData({ showPayModal: true, payBillInfo });
  },

  /**
   * 关闭支付弹窗（必要）
   */
  hidePayModal() {
    this.setData({ showPayModal: false });
  },

  /**
   * 确认支付（核心优化：删除冗余参数）
   */
  confirmPay() {
    const { payBillInfo, token } = this.data;
    const billId = payBillInfo.id;
    if (!billId) {
      wx.showToast({ title: '账单无效', icon: 'none' });
      this.hidePayModal();
      return;
    }

    wx.showLoading({ title: '支付中...' });

    // 核心优化1：删除无用的data:{billId}（已通过URL传参，重复且无效）
    wx.request({
      url: `http://localhost:8080/api/bill/pay?billId=${billId}`,
      method: 'PUT',
      header: { 'Authorization': 'Bearer ' + token }, // 仅保留必要header
      success: (res) => {
        wx.hideLoading();
        if (res.data.code === 200 && res.data.data) {
          this.callWechatPayment(res.data.data);
        } else {
          wx.showToast({ title: res.data.msg || '支付失败', icon: 'none' });
        }
      },
      fail: () => {
        wx.hideLoading();
        wx.showToast({ title: '网络错误', icon: 'none' });
      }
    });
  },

  /**
   * 调用微信支付接口（核心优化：修正跳转逻辑+删除无用跳转）
   */
  callWechatPayment(payParams) {
    const { timeStamp, nonceStr, package: pkg, signType, paySign } = payParams;

    wx.requestPayment({
      timeStamp: timeStamp + '',
      nonceStr: nonceStr,
      package: pkg,
      signType: signType || 'RSA',
      paySign: paySign,
      success: (res) => {
        if (res.errMsg === 'requestPayment:ok') {
          // 核心优化2：关闭支付弹窗（之前遗漏，体验差）
          this.hidePayModal();
          // 显示支付成功
          wx.showToast({
            title: '支付成功',
            icon: 'success',
            duration: 1500,
            mask: true
          });
          // 核心优化3：删除跳转到首页的无用逻辑，改为返回原页面
          setTimeout(() => {
            wx.navigateBack(); // 返回点击支付前的原账单页面
          }, 1500);
        }
      },
      fail: (res) => {
        this.hidePayModal(); // 失败也关闭弹窗
        if (res.errMsg !== 'requestPayment:fail cancel') {
          wx.showToast({ title: '支付失败', icon: 'none' });
        }
      }
    });
  },

  /**
   * 返回上一页（必要）
   */
  goBack() {
    wx.navigateBack();
  },

  /* 以下生命周期函数保持默认（必要，框架自带） */
  onReady() {},
  onHide() {},
  onUnload() {},
  onPullDownRefresh() {
    this.getBillList();
    wx.stopPullDownRefresh();
  },
  onReachBottom() {},
  onShareAppMessage() {}
})